package core_sql.day04

import util.FileUtil
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD
import org.apache.spark.storage.StorageLevel

/**
  * cache 缓存 缓存常用的方法有
  *
  * checkpoint    复杂的计算的时候才需要使用，进行计算的结果进行保存到文件中
  *
  */
object CacheCkpoint {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("IPLocation").setMaster("local[4]")

    val sc = new SparkContext(conf)
    //前期准备工作（下发一个job任务，收集全部的IP规则到Driver）

    val ipRuleLines: RDD[String] = sc.textFile(FileUtil.IP_LOG)


    //常用的rdd可以进行缓存，来提高运行速度
    val cache: RDD[String] = ipRuleLines.cache()

    ipRuleLines.persist(StorageLevel.MEMORY_AND_DISK_SER)

    ipRuleLines.unpersist()

    sc.setCheckpointDir("hdfs://")   // checkpoint 点 需要存储的位置

    ipRuleLines.checkpoint()  // 进行checkpoint   既不是transformation  也不是action



  }

}
